package com.xzmzhp.service.maintain.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xzmzhp.dao.maintain.StdmodeMapper;
import com.xzmzhp.pojo.maintain.Stdmode;
import com.xzmzhp.service.maintain.StdmodeService;
import com.xzmzhp.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * @author: 王源(xm)
 * @create: 2022-04-24 15:32
 * @program: ams
 * @description: 物品类型逻辑接口
 */
@Service
public class StdmodeServiceImpl implements StdmodeService {

    @Autowired
    private StdmodeMapper stdmodeMapper;

    /**
     * 验证物品类型是否存在
     *
     * @param stdmodeName 物品类型名称
     * @return 物品类型信息
     */
    @Override
    public Stdmode checkStdmodeByName(String stdmodeName) {
        QueryWrapper<Stdmode> queryWrapper = new QueryWrapper<>();
        if (StringUtils.isNotEmpty(stdmodeName)){
            queryWrapper.eq("stdmode_name",stdmodeName);
            return stdmodeMapper.selectOne(queryWrapper);
        }
        return null;
    }

    /**
     * 查询物品类型信息
     * @param stdmodeId 物品类型Id
     * @return 物品类型信息
     */
    @Override
    public Stdmode findStdmode(Integer stdmodeId) {
        if (StringUtils.isNotNull(stdmodeId)){
            return stdmodeMapper.selectById(stdmodeId);
        }
        return null;
    }

    /**
     * 查询所有物品类型信息
     * @param param 参数
     *        stdmodeStatus 物品类型状态
     *        stdmodeName 物品类型名称
     * @return 物品类型信息
     */
    @Override
    public List<Stdmode> findStdmodeList(Map<String, Object> param) {
        QueryWrapper<Stdmode> queryWrapper = new QueryWrapper<>();
        //获取参数
        Integer stdmodeStatus = Integer.parseInt(param.get("stdmodeStatus").toString());
        String stdmodeName = param.get("stdmodeName").toString();
        //判断查询条件
        if(StringUtils.isNull(stdmodeStatus)){
            queryWrapper.eq("stdmode_status",stdmodeStatus);
        }
        if (StringUtils.isNotEmpty(stdmodeName)){
            queryWrapper.like("stdmode_name",stdmodeName);
        }
        queryWrapper.orderByAsc("stdmode_status");
        return stdmodeMapper.selectList(queryWrapper);
    }

    /**
     * 添加物品类型信息
     *
     * @param stdmode 物品类型型信息
     * @return 影响行数
     */
    @Override
    public Integer addStdmode(Stdmode stdmode) {
        if (StringUtils.isNotNull(stdmode)){
            Stdmode check = checkStdmodeByName(stdmode.getStdmodeName());
            if (StringUtils.isNull(check)){
                return stdmodeMapper.insert(stdmode);
            }
        }
        return null;
    }

    /**
     * 修改物品类型信息
     *
     * @param stdmode 物品类型
     * @return 影响条数
     */
    @Override
    public Integer updateStdmode(Stdmode stdmode) {
        if (StringUtils.isNotNull(stdmode)){
            Stdmode check = checkStdmodeByName(stdmode.getStdmodeName());
            if (StringUtils.isNull(check)){
                return stdmodeMapper.updateById(stdmode);
            }
        }
        return null;
    }

    /**
     * 根据物品类型id修改物品类型状态
     * @param stdmodeId 物品类型id
     * @param status 物品类型状态
     * @return 是否成功
     */
    @Override
    public Integer exitStatus(Integer stdmodeId, String status) {
        if (StringUtils.isNotNull(stdmodeId) && StringUtils.isNotEmpty(status)){
            return stdmodeMapper.exitStatus(stdmodeId,status);
        }
        return null;
    }
}
